<?php

/**
 * Created by PhpStorm.
 * User: xckj003
 * Date: 2016/3/20
 * Time: 11:00
 */
//$path = Yii::getPathOfAlias('application.extensions.taobao') . '/TopSdk.php';
////echo  $path;
////exit;
//include_once $path;

namespace app\utils;

class TaoBaoApi
{
    public $c;
    public $appkey = '24685201';
    public $secretKey = 'a0652792037f3d1c5cb7bf32c50189a0';

    const GET_APP_KEY = 'TaoBaoApi_app_key';
    const APP_TYPE_KEY = 'www';
    const APP_LIMIT = 50;


    public function __construct()
    {
        /**
         * SDK工作目录
         * 存放日志，TOP缓存数据
         */
        if (!defined("TOP_SDK_WORK_DIR"))
        {
            define("TOP_SDK_WORK_DIR", \Yii::$app->getRuntimePath()."/taobao/tmp/");
        }

        /**
         * 是否处于开发模式
         * 在你自己电脑上开发程序的时候千万不要设为false，以免缓存造成你的代码修改了不生效
         * 部署到生产环境正式运营后，如果性能压力大，可以把此常量设定为false，能提高运行速度（对应的代价就是你下次升级程序时要清一下缓存）
         */
        if (!defined("TOP_SDK_DEV_MODE"))
        {
            define("TOP_SDK_DEV_MODE", true);
        }

        if (!defined("TOP_AUTOLOADER_PATH"))
        {
            define("TOP_AUTOLOADER_PATH", dirname(__FILE__)."/../utils/taobao/");
        }

        require_once(TOP_AUTOLOADER_PATH."Autoloader.php");

//        $this->init();
    }

//    /**
//     * @author       :   DuYongGao
//     * @name         :   init
//     * @description  :$appkey和$secretKey通过数据库取，而不是代码写死。
//     */
//    public function init(){
//        if(!$this->is_check()){
//            /**
//             * 逻辑执行顺序有要求，不可随意更改
//             */
//            $this->updateOld();
//            $app = $this->getKeyFromDb();
//            if(empty($app)){
//                return ;
//            }
//            $this->dataToDb($app);
//        }
//        $this->initApp();
//    }
//
//    public function getKey(){
//        return self::GET_APP_KEY.self::APP_TYPE_KEY;
//    }
//
//    /**
//     * @author       :   DuYongGao
//     * @name         :   is_check
//     * @description  :校验数据是否可用
//     * @return bool
//     */
//    public function is_check(){
//        $arr_key = Yii::app()->cache->get($this->getKey());
//        if(empty($arr_key)){
//            return false;
//        }
//        if(!isset($arr_key['now_used'])){
//            return false;
//        }
//        if($arr_key['now_used']>=self::APP_LIMIT){
//            return false;
//        }
//        if(empty($arr_key['app_key']) || empty($arr_key['app_secret_key'])){
//            return false;
//        }
//        return true;
//    }
//
//    /**
//     * @author       :   DuYongGao
//     * @name         :   getKeyFromDb
//     * @description  :
//     * @return array|bool|mixed|null
//     */
//    public function getKeyFromDb(){
//        $criteria = new CDbCriteria();
//        $criteria->compare('last_time','>='.date('Y-m-d').' 00:00:00');
//        $criteria->addCondition('`used`<`limit`');
//        $criteria->compare('app_type',self::APP_TYPE_KEY);
//        $criteria->order = 'used asc';
//        $result = TaobaoKeys::model()->find($criteria);
//        if(empty($result)){
//            return false;
//        }
//        $return  = $result->attributes;
//        $return['now_used'] = 0;
//        return $return;
//    }
//
//    /**
//     * @author       :   DuYongGao
//     * @name         :   dataToDb
//     * @description  :数据与缓存同步数据
//     * @param $app
//     */
//    public function dataToDb($app){
//        $arr_key = Yii::app()->cache->get($this->getKey());
//        //缓存数据同步到数据库
//        if(!empty($arr_key)){
//            $criteria = new CDbCriteria();
//            $criteria->compare('app_type',self::APP_TYPE_KEY);
//            $criteria->compare('app_key',$arr_key['app_key']);
//            $criteria->compare('app_secret_key',$arr_key['app_secret_key']);
//            TaobaoKeys::model()->updateCounters([
//                'used'=> self::APP_LIMIT
//            ],$criteria);
//        }
//        //数据库同步到缓存
//        Yii::app()->cache->set($this->getKey() ,$app);
//    }
//
//    public function initApp(){
//        $arr_key = Yii::app()->cache->get($this->getKey());
//        $this->appkey = $arr_key['app_key'];
//        $this->secretKey = $arr_key['app_secret_key'];
//        $arr_key['now_used']++;
//        Yii::app()->cache->set($this->getKey() ,$arr_key);
//    }
//
//    /**
//     * @author       :   DuYongGao
//     * @name         :   updateOld
//     * @description  :非今天的记录初始化
//     * @return int|void
//     */
//    public function updateOld(){
//        $criteria = new CDbCriteria();
//        $criteria->compare('app_type',self::APP_TYPE_KEY);
//        $criteria->compare('last_time','<'.date('Y-m-d'));
//        $row = TaobaoKeys::model()->find($criteria);
//        if(empty($row)){
//            return false;
//        }
//        return TaobaoKeys::model()->updateAll([
//            'used'=>0,
//            'last_time' => date('Y-m-d H:i:s'),
//        ],$criteria);
//    }

    public function getCoupon($gid , $aid){
        $this->c = new \TopClient;
        $this->c->appkey = $this->appkey;
        $this->c->secretKey = $this->secretKey;
        $req = new \TbkCouponGetRequest;
        $req->setItemId($gid);
        $req->setActivityId($aid);
        $resp = (array) $this->c->execute($req);
        if(isset($resp['data'])){
            $resp['data'] = (array) $resp['data'];
        }else{
            throw new \Exception("读取券信息失败！");
        }
        if(!isset($resp['data']['coupon_amount']) || empty($resp['data']['coupon_amount'])){
            throw new \Exception("读取券信息失败！");
        }
        return $resp['data'];
    }
}